package cn.jinhe.doc.util;

import cn.jinhe.doc.domain.User;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class CheckPrivilegeInterceptor extends AbstractInterceptor {

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
//		System.out.println("------>之前");
//	   
//		
//		String result= invocation.invoke();
//	
//		System.out.println("------>之后");
//		
//		return result;
			//获取信息
			User user=(User) ActionContext.getContext().getSession().get("user");
			String namespace = invocation.getProxy().getNamespace();
			String actionName = invocation.getProxy().getActionName();
			String privUrl = namespace + actionName; // 对应的权限URL		
			//如果未登录,转入登录页面
		if(user==null){
			if (privUrl.startsWith("/user_login")) { // "/user_loginUI", "/user_login"
				// 如果是去登录，就放行
				return invocation.invoke();
			} else {
				// 如果不是去登录，就转到登录页面
				return "loginUI";
			}			
		}
		
			//如果已登录,就判断权限
			
		else{
				//如果有权限，就放行 
				if(user.hasPrivilegeByUrl(privUrl))
				{
					return invocation.invoke();
				}
				//若无权限则转入提示错误页面
				else{
					return "noPrivilegeError";				
				}
		}	
	}



}
